<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>http://javascript.ruanyifeng.com/stdlib/console.html</title>
</head>
<body>
<img src="1.html">
<img src="1.html">
<img src="1.html">
<img src="1.html">
<img src="1.html">
<script>
    //    log()，info()，debug()


    console.log(' %s + %s = %s', 1, 1, 2)


    //    %s 字符串
    //    %d 整数
    //    %i 整数
    //    %f 浮点数
    //    %o 对象的链接
    //    %c CSS格式字符串


    var number = 11 * 9;
    var color = 'red';

    console.log('%d %s balloons', number, color);
    // 99 red balloons
    console.log(
        '%c 太帅了',
        'color: rgba(111,000,999,0.6); background: pink; font-size: 24px;'
    );
    console.log(' %s + %s ', 1, 1, '= 2');

    console.log({foo: 'bar'});
    // Object {foo: "bar"}

    console.log(Date);
    // function Date() { [native code] }


    ['log', 'info', 'warn', 'error'].forEach(function (method) {
        console[method] = console[method].bind(
            console,
            new Date().toISOString(),
            'why'
        );
    });

    console.log("出错了！");
    // 2014-05-18T09:00.000Z 出错了！
    console.warn("出错了！");
    console.info("出错了！");
    console.error("出错了！");


    //    table()
    var languages = [
        {name: "JavaScript", fileExtension: ".js"},
        {name: "TypeScript", fileExtension: ".ts"},
        {name: "CoffeeScript", fileExtension: ".coffee"},
        {name: this, fileExtension: this.window.document.domain}
    ];

    console.table(languages);


//    复合型数据转为表格显示的条件是，必须拥有主键。对于数组来说，主键就是数字键。对于对象来说，主键就是它的最外层键。
    languages = {
        csharp: {name: "C#", paradigm: "object-oriented"},
        fsharp: {name: "F#", paradigm: "functional"}
    };

    console.table(languages);


    ['log', 'info', 'warn', 'error'].forEach(function (method) {
        console[method] = console[method].bind(
            console,
            NaN,
            NaN
        );
    });

    function greet(user) {
        console.count();
        console.log( 'hi ' + user);
    }

    greet('bob');
    //  : 1
    // "hi bob"

    greet('alice');
    //  : 2
    // "hi alice"

    greet('bob');
    //  : 3
    // "hi bob"


    console.log({f1: 'foo', f2: 'bar'});
    // Object {f1: "foo", f2: "bar"}

    console.dir({f1: 'foo', f2: 'bar'});
    // Object
    //   f1: "foo"
    //   f2: "bar"
    //   __proto__: Object
    console.dir(document.body);
    console.dirxml(document.body);

    console.log(document.body);



    console.dirxml([1, 2, 3]);
    // 等同于
    console.dir([1, 2, 3])



    console.assert(true === false, '判断条件不成立');
    console.assert(true === true, '判断条件不成立')




    console.time('Array initialize');

    var array= new Array(1000000);
    for (var i = array.length - 1; i >= 0; i--) {
        array[i] = Object();
    };

    console.timeEnd('Array initialize');
    // Array initialize: 1914.481ms



    console.profile('p');
    // Profile 'p' started.
//    console.profileEnd方法用来结束正在运行的性能测试器。

    console.profileEnd()
    // Profile 'p' finished.


    console.group('Group One');
    console.log("******************************************************************************************************************************************************************************************************************************************************************************************************");
    console.group('Group Two');

    // some code

    console.groupEnd(); // Group Two 结束
    console.groupEnd(); // Group One 结束



    console.groupCollapsed('Fetching Data');

    console.log('Request Sent');
    console.error('Error: Server not responding (500)');

    console.groupEnd();


    console.trace(this.window.document.title);


//    $_属性返回上一个表达式的值。
//    $(selector)
    var images = $('img');
    for (each in images) {
        console.log(images[each].src);
    }


</script>
</body>
</html>